package ch.penas.web;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import org.apache.log4j.Logger;


import ch.penas.business.dom.Competence;
import ch.penas.business.service.CompetenceService;
import ch.penas.business.service.CompetenceServiceImpl;

/** @author Daniel */
@ManagedBean(name = "manageBeanCompetence")
@SessionScoped
public final class ManageBeanCompetence implements Serializable {

	/**La serialization de la class ManageBeanCompetence pour question de securiter.*/
    private static final long serialVersionUID = 7821547244981771579L;
    
    private static final Logger LOGGER = Logger.getLogger(ManageBeanCompetence.class);
    
    /** mCompetence est egale a une Competence. */
    private Competence mCompetence;
    
    /** mService est egale au service d'une Competence. */
    private CompetenceService mService;

    /** Constructeur par defaut de la class ManageBeanCompetence. */
    public ManageBeanCompetence() {
        this.mCompetence = new Competence();
        this.mService = new CompetenceServiceImpl();
    }
    
    /** Permet de modifier une competence.
     *
     * @return successUpdateUtilisateur si l'update c'est bien passer !
     */
    public String update() {
        this.mService.update(this.mCompetence);
        this.mCompetence = new Competence();
        return "successUpdateUtilisateur";
    }
    
    /** Permet d'ajouter des competence.
     *
     * @return successUtilisateur si l'ajout c'est bien passer !
     */
    public String add() {
        this.mService.add(this.mCompetence);
        this.mCompetence = new Competence();
        return "successUtilisateur";
    }
    
    /** Permet de supprimer des competence.
     *
     * @return successDeleteUtilisateur si la suppresion c'est bien passer !
     */
    public String del() {
        this.mService.del(this.mCompetence);
        this.mCompetence = new Competence();
        return "successDeleteUtilisateur";
    }
    
    /** Permet de recuperer la valeur de mCompetence.
     *
     * @return mCompetence qui est egale a une competence
     */
    public Competence getCompetence() {
        return this.mCompetence;
    }
    
    /** Permet de recuperer la valeur de mService.
     *
     * @return mService qui est egale au service d'une competence
     */
    public CompetenceService getService() {
        return this.mService;
    }

    /** Permet de recuperer la valeur de LOGGER.
     *
     * @return LOGGER qui est egale au LOGGER
     */
	public static Logger getLogger() {
		return LOGGER;
	}
	
	/** Permet de modifier la valeur de mCompetence.
	 *
	 * @param aCompetence est egale au mCompetence de Competence
	 */
	public void setSelectedCompetence(final Competence aCompetence) {
		this.mCompetence = aCompetence;
	}
    /** Permet de recuperer la valeur de mCompetence.
     *
     * @return mCompetence qui est egale a une competence
     */
	public Competence getSelectedCompetence() {
		return this.mCompetence;
	}
}